//
//  StoryboardLoadable.swift
//  Merchant
//
//  Created by 薛永伟 on 2019/5/29.
//  Copyright © 2019 Yuri. All rights reserved.
//

import Foundation
import UIKit


/**
 从storyboard加载控制器，充分条件：
 1、storyboard中有该类的可视化面板
 2、storyboard中该类的可视化面板的storyboard ID必须和该类同名
 3、该类不能定义在其他的类里。
 */
protocol  StoryboardLoadable where Self:UIViewController{
    
}

extension StoryboardLoadable {
    
    /// 从storyboard加载控制器
    static func loadFormStoryBoard(name:String,withIdentifier identifier:String) -> Self {
        
        let stbVC = UIStoryboard.init(name: name, bundle: nil).instantiateViewController(withIdentifier: identifier) as! Self
        return stbVC
    }
    
    /// 从storyBorad加载控制器，需要Identifier在storyborad文件里设置为当前类名
    static func loadFormStb(stb:UIStoryboard) -> Self {
        
        let idstr = Self.classForCoder().description().components(separatedBy: ".").last ?? ""
        let stbVC = stb.instantiateViewController(withIdentifier: idstr) as! Self
        return stbVC
    }
  
}
